home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / PROLOG / BP330 / !BinPro330 / progs / setarg_dcg < prev    next >
Text File  |  1994-09-10  |  799b  |  56 lines

  1.  
  2. % DCGs with no preprocessor
  3. % expects: Sicstus-style backtrackable setarg +
  4. % BinProlog's backtrackable global variables 
  5.  
  6. % tools
  7.  
  8. begin_dcg(Name,Xs):-lval(dcg,Name,Xs-Xs).
  9.  
  10. end_dcg(Name,Xs):-lval(dcg,Name,Xs-[]).
  11.  
  12. w(Word,Name):-
  13.   lval(dcg,Name,State),
  14.   State=_-[Word|Xs2],
  15.   setarg(2,State,Xs2).
  16.  
  17. begin_dcg(Xs):-begin_dcg(default,Xs).
  18. end_dcg(Xs):-end_dcg(default,Xs).
  19. w(Word):-w(Word,default).
  20.  
  21. % grammar
  22. x:-ng,v.
  23.  
  24. ng:-a,n.
  25.  
  26. a:-w(the).
  27. a:-w(a).
  28.  
  29. n:-w(cat).
  30. n:-w(dog).
  31.  
  32. v:-w(walks).
  33. v:-w(sleeps).
  34.  
  35. % test
  36. go:-begin_dcg(Xs),x,end_dcg(Ys),write(Ys),nl,fail.
  37.  
  38. p:-[setarg_dcg].
  39.  
  40. /*
  41.  
  42. ?- [setarg_dcg].
  43. compiling(to(mem),myprogs/setarg_dcg.pl,...)
  44. compile_time(134)
  45. ?- go.
  46. [the,cat,walks]
  47. [the,cat,sleeps]
  48. [the,dog,walks]
  49. [the,dog,sleeps]
  50. [a,cat,walks]
  51. [a,cat,sleeps]
  52. [a,dog,walks]
  53. [a,dog,sleeps]
  54.  
  55. */
  56.